Method and system for a resource reallocation of computing resources in a resource pool using a ledger service

ABSTRACT

In general, in one aspect, the invention relates to a method for managing pool device resources, the method including obtaining, by a distribution manager, a resource use request from a user application, wherein the user application and the distribution manager are operating on a pool device, identifying a peripheral component interconnect (PCI) bus device, wherein the PCI bus device is located on a second pool device and connected to a pool device resource on the second pool device, and initiating access to the PCI bus device using a virtual switch operating on the pool device.

BACKGROUND

Systems may include multiple computing devices. Each computing devicemay include computing resources. The computing resources may not be usedby all computing devices at all times.

SUMMARY

In general, in one aspect, the invention relates to a method formanaging pool device resources, the method including obtaining, by adistribution manager, a resource use request from a user application,wherein the user application and the distribution manager are operatingon a pool device, identifying a peripheral component interconnect (PCI)bus device, wherein the PCI bus device is located on a second pooldevice and connected to a pool device resource on the second pooldevice, and initiating access to the PCI bus device using a virtualswitch operating on the pool device.

In general, in one aspect, the invention relates to a non-transitorycomputer readable medium comprising computer readable program code,which when executed by a computer processor enables the computerprocessor to perform a method, the method comprising: obtaining, by adistribution manager, a resource use request from a user application,wherein the user application and the distribution manager are operatingon a pool device, identifying a peripheral component interconnect (PCI)bus device, wherein the PCI bus device is located on a second pooldevice and connected to a pool device resource on the second pooldevice, and initiating access to the PCI bus device using a virtualswitch operating on the pool device.

In general, in one aspect, the invention relates to a pool device,comprising: a PCI bus device, a virtual switch, a user application, anda distribution manager programmed to: obtain a resource use request fromthe user application, identify a second PCI bus device, wherein thesecond PCI bus device is connected to a pool device resource in a secondpool device; and initiate access to the second PCI bus device using thevirtual switch.

BRIEF DESCRIPTION OF DRAWINGS

Certain embodiments of the invention will be described with reference tothe accompanying drawings. However, the accompanying drawings illustrateonly certain aspects or implementations of the invention by way ofexample and are not meant to limit the scope of the claims.

FIG. 1 shows a diagram of a system in accordance with one or moreembodiments of the invention.

FIG. 2 shows a diagram of a pool device in accordance with one or moreembodiments of the invention.

FIG. 3A shows a flowchart for pool device resource allocation inaccordance with one or more embodiments of the invention.

FIG. 3B shows a flowchart for performing a resource use prediction inaccordance with one or more embodiments of the invention.

FIG. 3C shows a flowchart for generating a digital twin in accordancewith one or more embodiments of the invention.

FIGS. 4A-4C show examples in accordance with one or more embodiments ofthe invention.

FIG. 5 shows a diagram of a computing device in accordance with one ormore embodiments of the invention.

DETAILED DESCRIPTION

Specific embodiments will now be described with reference to theaccompanying figures. In the following description, numerous details areset forth as examples of the invention. It will be understood by thoseskilled in the art that one or more embodiments of the present inventionmay be practiced without these specific details and that numerousvariations or modifications may be possible without departing from thescope of the invention. Certain details known to those of ordinary skillin the art are omitted to avoid obscuring the description.

In the following description of the figures, any component describedwith regard to a figure, in various embodiments of the invention, may beequivalent to one or more like-named components described with regard toany other figure. For brevity, descriptions of these components will notbe repeated with regard to each figure. Thus, each and every embodimentof the components of each figure is incorporated by reference andassumed to be optionally present within every other figure having one ormore like-named components. Additionally, in accordance with variousembodiments of the invention, any description of the components of afigure is to be interpreted as an optional embodiment, which may beimplemented in addition to, in conjunction with, or in place of theembodiments described with regard to a corresponding like-namedcomponent in any other figure.

In general, embodiments of the invention relate to a method and systemfor managing pool device resources. Specifically, embodiments of theinvention relate to a system that enables a pool devices of a resourcepool(s) to access the pool device resources of other pool devices in theresource pool(s). The method may utilize a ledger service that storesimmutable entries that specify which pool device resources of pooldevices are in use by other pool devices. Embodiments of the inventionmay include using virtual switches of the pool device to establish aconnection to one or more peripheral component interconnect (PCI) busdevices of the other pool devices. The PCI bus devices may be connectedto the pool device resources of the other pool devices. In this manner,a given pool device may discover, access, and use a pool device resourceon another device.

FIG. 1 shows a diagram of a system in accordance with one or moreembodiments of the invention. The system includes one or more resourcepools (100), a ledger service (120), a resource use manager (140), oneor more secondary sources (150), and a digital twin service (160). Eachcomponent of the system may be operably connected via any combination ofwired and/or wireless connections. The system may include additional,fewer, and/or different components without departing from the invention.Each component of the system illustrated in FIG. 1 is discussed below.

In one or more embodiments of the invention, the resource pool (100) isa logical grouping of pool devices (100A, 100B), each of which mayobtain data, stores data, provide data, and/or execute applications. Theresource pool (100) may be enabled to allow any pool device (100) toaccess the pool device resources of other pool devices (100A, 100B) inthe resource pool (100). Further, the resource pool (100) may be enabledto access the computing devices of other resource pools (not shown)using a ledger service (120).

In one or more embodiments of the invention, each pool device (100A,100B) is implemented as a computing device (see, e.g., FIG. 5). Acomputing device may be, for example, a mobile phone, tablet computer,laptop computer, desktop computer, server, or cloud resource. Thecomputing device may include one or more processors, memory (e.g.,random access memory), and persistent storage (e.g., disk drives, solidstate drives, etc.). The persistent storage may store computerinstructions, e.g., computer code, that when executed by theprocessor(s) of the computing device cause the computing device toperform the functions of the pool device (100A, 100B) describedthroughout this application and/or all, or portion, of the methodillustrated in FIG. 3A. For additional details regarding a pool device(100A, 100B), see, e.g., FIG. 2.

In one or more embodiments of the invention, a ledger service (120) is aservice that stores data and/or metadata obtained from the resource pool(100). The ledger service (120) may include functionality to storeimmutable entries, where each entry specifies a PCI bus device, usage(or availability) of PCI bus device, and the pool device resource towhich PCI bus device is connected.

In one or more embodiments of the invention, the ledger service (120)includes current resource use ledger entries (122). The current resourceuse ledger entries (also referred to as ledger entries) (122) may bedata structures that specify the availability of pool device resourcesin the resource pool (100). The ledger entries may specify a peripheralcomponent interconnect (PCI) bus device of a pool device (discussed inFIG. 2) and/or its availability for use by other pool devices. If a pooldevice accesses a PCI bus device of a second pool device, the use isregistered in a ledger entry that specifies the use and theaforementioned entry is updated to reflect the availability of the PCIbus device as “not available.” In this context, “not available” mayrefer to the inability of: (i) the pool device on which the PCI busdevice to use the PCI bus device and/or (ii) other pool devices to usethe aforementioned PCI bus device.

After the use is complete, the availability of the PCI bus device isreflected in an entry in the ledger service as “available.” In thismanner, the ledger service (120) may be used to prevent more than onepool device from using (or attempting to use) a PCI bus device.

In one or more embodiments of the invention, the ledger service (120)further includes historical data points (124) that specify previousallocations of pool device resources between the pool devices (100A,100B). The historical data points (124) may be stored in entries thatspecify, on a per-PCI bus device: (i) an identifier of the PCI busdevice; (ii) the pool device that was utilizing the PCI bus device, and(iii) a timestamp that specifies the period of time in which the PCI busdevice was used. Each entry in the historical data points (124) mayinclude other information without departing from the invention.

In one or more embodiments of the invention, the ledger service (120) isimplemented as a computing device (see, e.g., FIG. 5). The computingdevice may be, for example, a mobile phone, tablet computer, laptopcomputer, desktop computer, server, or cloud resource. The computingdevice may include one or more processors, memory (e.g., random accessmemory), and persistent storage (e.g., disk drives, solid state drives,etc.). The persistent storage may store computer instructions, e.g.,computer code, that when executed by the processor(s) of the computingdevice cause the computing device to perform the functions of the ledgerservice (120) described throughout this application.

In one or more embodiments of the invention, the ledger service (120) isimplemented as a logical device. The logical device may utilize pooldevice resources of any number of physical computing devices to providethe functionality of the ledger service (120) described throughout thisapplication.

In one or more embodiments of the invention, the ledger service (120) isimplemented as a distributed ledger (e.g., a block chain). Thedistributed ledger may utilize pool device resources of any number ofphysical computing devices (see e.g., FIG. 5) to provide thefunctionality of the ledger service (120) described throughout thisapplication.

In one or more embodiments of the invention, the resource use manager(140) manages the pool device resource use of the pool device resourcesof the resource pool (100). In one or more embodiments of the invention,the resource use manager (140) manages the pool device resources byperforming the method of FIG. 3B to generate a prediction model usingthe historical data points (122) of the ledger service (120). Theprediction model may be used to predict future usage of the resourcepool (or, more specifically, of the PCI bus devices in the resourcepool). The resource use manager (140) may initiate resource allocationsbased on the prediction model. The prediction model (140) may begenerated based on the secondary sources (150) (defined below) inaddition to the historical data points (122).

In one or more embodiments of the invention, the resource use manager(140) includes a telemetry service (144) that obtains the historicaldata points (124) and/or monitors the usage of the pool device resourcesin the resource pool (100) to gather training data for the predictionservice (142).

In one or more embodiments of the invention, the prediction service(142) generates a prediction model using training data obtained from thetelemetry service (144). The prediction service (142) may perform themethod of FIG. 3B to generate the prediction model.

In one or more embodiments of the invention, the resource use manager(140) is implemented as a computing device (see, e.g., FIG. 5). Thecomputing device may be, for example, a mobile phone, tablet computer,laptop computer, desktop computer, server, or cloud resource. Thecomputing device may include one or more processors, memory (e.g.,random access memory), and persistent storage (e.g., disk drives, solidstate drives, etc.). The persistent storage may store computerinstructions, e.g., computer code, that when executed by theprocessor(s) of the computing device cause the computing device toperform the functions of the resource use manager (140) described inthis application and/or all, or portion, of the methods illustrated inFIG. 3B.

The resource use manager (140) may be implemented as a logical devicewithout departing from the invention. The logical device utilizes pooldevice resources of any number of physical computing devices to providethe functionality of the resource use manager (140) described throughoutthis application and/or all, or portion, of the methods illustrated inFIG. 3B.

In one or more embodiments of the invention, the secondary sources (150)obtain data and/or other information from real-life processes. The dataand/or information may be provided to the resource use manager (140) touse in prediction of future resource use. The real-life occurrences maybe, for example, one or more people's schedules for work, weatherpatterns, geographical locations, and/or any other occurrences that mayimpact the demand of one or more pool devices (or, more specifically,one or more PCI bus devices).

For example, consider a scenario in which a first pool device in anexample resource pool operates at an airport. The first pool device,when checking in passengers boarding a flight, may require pool deviceresources in additional to the pool device resources available on thefirst pool device. During check-in, the first pool device may utilize aprocessor (accessed via a PCI bus device) of a second pool device. Asecondary source specifying the schedule of flights in the airport maybe used by the resource use manager (140) to predict future demand ofadditional resources by the first computing device. The prediction maybe used to proactively allocate the additional pool device resources tothe first pool device from other pool devices.

In one or more embodiments of the invention, the digital twin service(160) includes functionality for initiating a generation of digitaltwins. In one or more embodiments of the invention, the digital twingeneration is initiated via the method of FIG. 3C. The digital twinservice (160) may communicate with the resource pool (100) to identifythe pool device resources of each pool device (100A, 100B) and to obtainconfiguration information of the pool devices (100A, 100B). Theconfiguration information and the identified pool device resources of apool device (100A, 100B) may be used to generate a digital twin of thepool device (100A, 100B).

In one or more embodiments of the invention, a digital twin is a digitalmodel of a pool device (e.g., 100A, 100B) and/or a resource pool (e.g.,100). The digital model may be computing code that models the behaviorof the pool device or resource pool. The behavior may include mimickingthe capability of the pool device (including the behavior of the PCI busdevices located thereon). The behavior may be used to, for example,simulate the pool device and/or resource pool.

The invention is not limited to the architecture shown in FIG. 1.

FIG. 2 shows a diagram of a pool device in accordance with one or moreembodiments of the invention. The pool device (200) may be an embodimentof a pool device (100A, 100B, FIG. 1) discussed above. As discussedabove, the pool device (200) utilizes pool device resources (i.e., localpool device resources) and pool device resources of other pool devices(also referred to as external pool device resources).

To perform the aforementioned functionality, the pool device (200)includes a user application (212), a pool device operating system (OS)(210), one or more PCI bus devices (220), and one or more pool deviceresources (230). The pool device (200) may include additional, fewer,and/or different components without departing from the invention. Eachof the aforementioned components is discussed below.

In one or more embodiments of the invention, the user application (212)is a service operated by a user utilizing the pool device (212). Theuser application (212) may access the pool device resources (alsoreferred to as local resources) (230) via the pool device OS (210). Theuser application may use the pool device resources (230) to perform oneor more processes. Additionally, the user application may utilize thepool device resources of other pool devices (also referred to as PCI busdevices). The external pool device resources may be accessed via thepool device OS (210).

In one or more embodiments of the invention, the user application (212)is implemented as computing code stored on a persistent storage (e.g.,230) that when executed by a processor (e.g., 230) of the pool device(200) performs the functionality of the user application (212). Theprocessor may be a hardware processor including circuitry such as, forexample, a central processing unit or a microcontroller. The processormay be other types of hardware devices for processing digitalinformation without departing from the invention.

In one or more embodiments of the invention, the pool device OS (210) isan operating system that manages the operation of the components in thepool device (200) (e.g., the user application (212)), the PCI busdevices (220), and the computing resources (230). The pool device OS(210) may orchestrate the communication between: (i) the PCI bus devices(220) connected to the pool device resources (230) and (ii) the userapplication (212) and/or any other computer code executing on the pooldevice (200).

In one or more embodiments of the invention, the pool device OS (220) isimplemented as computer instructions, e.g., computer code, stored on apersistent storage that when executed by a processor(s) of the pooldevice (200) cause the pool device (200) to provide the functionality ofthe host OS (220) described throughout this application.

In one or more embodiments of the invention, the pool device OS (210)includes a distribution manager (214) that includes functionality formanaging the pool device resource use of the user application (212).Specifically, the distribution manager (214) accesses a ledger service(e.g., 120, FIG. 1) to: (i) provide information about the PCI busdevices (e.g., 220A, 220M) that are on the pool device (200); (ii)provide information about the availability of the PCI bus devicesenumerated in (i), and (iii) identify available PCI bus devices on otherpool devices. Further, the distribution manager includes functionalityfor initiating access to the external pool device resources via virtualswitches (216).

In one embodiment of the invention, the distribution manager (214)includes functionality to obtain ledger entries about PCI bus devices(220) located on the pool device (200) that have been reserved byanother pool device. This information may then be used to prevent theuser applications (212) on the pool device (200) from attempting toaccess and use a PCI bus device (220A, 220M) that has been reservedand/or used by another pool device. For example, when a PCI bus deviceis reserved by another pool device, the pool device OS may mask (orhide) the PCI bus device from the user application. In another example,when a PCI bus device is reserved by another pool device, the pooldevice OS may not mask (or hide) the existence of the PCI bus device butmay deny access or use of the PCI bus device. The pool device OS may useany known or later discovered mechanism to perform the aforementionedfunctionality.

In one or more embodiments of the invention, the distribution manager(214) is implemented as computing code stored on a persistent storagethat when executed by a processor of the pool device (200) performs thefunctionality of the distribution manager (214) described throughoutthis application and/or all, or a portion thereof, of the methodillustrated in FIG. 3A. The processor (not shown) may be a hardwareprocessor including circuitry such as, for example, a central processingunit or a microcontroller. The processor may be other types of hardwaredevices for processing digital information without departing from theinvention.

In one or more embodiments of the invention, the pool device OS (210)further includes virtual switches (216), managed by the distributionmanager (214), that are used to access the PCI bus devices of a secondpool device utilized by the user application (212). The virtual switches(214) may connect to other PCI bus devices via, for example, a pooldevice OS executing on the second pool device. Thus, the virtualswitches (216) allow for the user application (212) to access and/or usePCI bus devices (and pool device resources accessible via the PCI busdevices) of other pool devices. In one embodiment of the invention, thevirtual switches implement one or more networking protocols (e.g.,transmission control protocol (TCP), Internet Protocol (IP), etc.) thatfacilitates the communication of data between the pool device and otherpool devices.

In one or more embodiments of the invention, each virtual switch (216A,216N) is implemented as computing code stored on a persistent storagedevice of the pool device (200) that when executed by a processor of thepool device (200) performs the functionality of the virtual switch(216A, 216N). The processor may be a hardware processor includingcircuitry such as, for example, a central processing unit or amicrocontroller. The processor may be other types of hardware devicesfor processing digital information without departing from the invention.

In one or more embodiments of the invention, the pool device OS (210)accesses the pool device resources (230) using PCI bus devices (220). Inone or more embodiments of the invention, a PCI bus device (220) is ahardware component that enables the transfer of data between the pooldevice resources (230) and the pool device OS (210) (which includes thevirtual switches). The data received by the pool device OS from the PCIbus devices may be used by user applications on the pool device and/ortransmitted, via the virtual switch(es) to other pool devices. Further,the pool device OS may receive data from user applications and/or fromother pool devices (via the virtual switches) and transmit thisinformation to the PCI bus devices.

In one embodiment of the invention, the PCI bus device is a hardwarecomponent(s) that implements all or a portion of the PCI Expressstandard. The PCI Express standard may be any version of the PCI Expressstandard that has been developed (e.g., PCI Express 1.0a, 1.1, 2.0, 2.1,3.0, 3.1, 4.0, 5.0, 6.0) or that may be developed in the future. Whilethis invention is described with respect to the PCI Express standard,the invention may be implemented using other physical bus communicationmechanisms or standards that enable a pool device OS to interface withphysical resources (also referred to as pool device resources) on aprinted circuit board (PCB) (e.g., a motherboard).

In one or more embodiments of the invention, the pool device resources(230) are hardware devices that are connected to the PCI bus devices(220). The pool device resources (230) (also referred to as localresources in relation to the pool device) may be used by the pool device(200) and/or by other pool devices. The pool device resources (230) areaccessed locally (e.g., by the pool device OS (210), the userapplication (212), etc.) via the PCI bus devices (220). The pool deviceresources (230) are accessed externally (e.g., by other pool devices)via the virtual switches (216) of the external pool devices.

In one or more embodiments of the invention, at least a portion of thepool device resources (230) are processors. The processors may be, forexample, central processing units (CPUs) (either multi-core or singlecore), graphics processing units (GPUs), and/or any other types ofprocessors without departing from the invention.

In one or more embodiments of the invention, at least a portion of thepool device resources (230) are memory devices. The memory devices maybe, for example, random access memory (RAM), read-only memory (ROM),flash memory, and/or any other types of memory without departing fromthe invention.

In one or more embodiments of the invention, at least a portion of thepool device resources (230) are persistent storage. The persistentstorage may be, for example, a solid state drive (SSD), hard-diskdrives, and/or any other types of persistent storage without departingfrom the invention.

The invention may be implemented using other pool device resourceswithout departing from the invention.

FIGS. 3A-3C show flowcharts in accordance with one or more embodimentsof the invention. While the various steps in the flowcharts arepresented and described sequentially, one of ordinary skill in therelevant art will appreciate that some or all of the steps may beexecuted in different orders, may be combined or omitted, and some orall steps may be executed in parallel. In one embodiment of theinvention, the steps shown in FIGS. 3A-3C may be performed in parallelwith any other steps shown in FIGS. 3A-3C without departing from thescope of the invention.

FIG. 3A shows a flowchart for pool device resource allocation inaccordance with one or more embodiments of the invention. The methodshown in FIG. 3A may be performed by, for example, a distributionmanager (214, FIG. 2). Other components of the system illustrated inFIG. 2 or FIG. 1 may perform the method of FIG. 3A without departingfrom the invention.

Turning to FIG. 3A, in step 300, a resource use request is obtained froma user application. The user application may be executing on the pooldevice hosting the pool device OS. The resource use request may specifyaccessing external pool device resources for a specified period of time.The resource use request may specify the type(s) of pool deviceresources it would like to utilize (e.g., processors, memory, persistentstorage, etc.).

In step 302, one or more available PCI bus devices are identified usinga ledger service. In one or more embodiments of the invention, thedistribution manager sends a request to the ledger service thatspecifies whether any PCI bus devices are available for use by the userapplication. The ledger service may provide, for example, a list ofavailable PCI bus devices.

In step 304, a determination is made about whether any available PCI busdevices are identified. The determination in step 304 may includeanalyzing the list of available PCI bus devices provided by the ledgerservice and determining whether any of the available PCI bus devicessatisfy the resource use request.

For example, the resource use request may specify using a processor forcalculation and processing. The distribution manager may analyze theledger entries in the ledger service to identify whether any PCI busdevices are connected to a processor in another pool device.

In one or more embodiments of the invention, the list provided by theledger service may specify no available PCI bus devices. In such ascenario, the distribution manager may determine that no PCI bus devicesare available.

If one or more PCI bus devices are available, the method proceeds tostep 308; otherwise, the method proceeds to step 306.

In step 306, a notification is sent to the user application. Thenotification may be a message that specifies that there are no availablePCI bus devices for use. The process may then end.

In step 308, at least one PCI bus device is selected to be used. In oneor more embodiments of the invention, if more than one PCI bus device isavailable, the distribution manager may select based on, for example,the capability of the available pool device resources connected to thePCI bus devices (e.g., selecting the processor with the largest numberof processing cores). In one or more embodiments of the invention, thePCI bus devices are selected at random.

In one or more embodiments of the invention, the PCI bus device isselected by the user application. For example, the distribution managermay send a selection of options for available PCI bus devices to theuser application. The user application may respond with the selected PCIbus device(s).

The PCI bus device may be selected from a set of PCI bus devices usingany other selection mechanism without departing from the invention

In step 310, PCI access is initiated between the identified PCI busdevice and the user application using one or more virtual switches. Inone or more embodiments of the invention, the distribution manager sendsa command to the virtual switch to connect (or facilitate connection oraccess by) the virtual switch to the selected PCI bus device(s) viarequests sent to an operating system executing on the pool device of theselected PCI bus device(s). The request may specify accessing theselected PCI bus device for a predetermined period of time.

In one or more embodiments of the invention, the virtual switch connectsdirectly to the selected PCI bus device(s) without use of the pooldevice OS of the selected PCI bus device(s). In such embodiments, theuser application accesses the pool device resources of a second pooldevice independently from the pool device OS of the second pool device.

In step 312, a ledger entry is stored in the ledger service based on thePCI access. In one or more embodiments of the invention, the ledgerentry may specify (i) the selected PCI bus device; (ii) pool device (oruser application executing on the pool device) that has reserved the PCIbus device is accessing the external pool device resources, (iii) atimestamp that specifies the time at which the PCI bus device is beingreserved and, optionally, the duration of the reservation of the pooldevice. The ledger entry may include additional and/or differentinformation without departing from the invention.

In step 314, the ledger service is updated after the PCI access iscomplete. In one or more embodiments of the invention, the distributionmanager identifies the access as complete by obtaining a notificationfrom the user application that the user application is no longerutilizing the external PCI bus device(s). Alternatively, thedistribution manager may monitor the data transmission between thevirtual switch providing the access and the external pool device. Whenthe distribution manager identifies that data transmission is no longeroccurring, it may determine that the access is complete.

After the access to the external PCI bus device(s) is complete, theledger service may update the ledger entry to specify that the externalpool device resources are available for use again. The ledger entrygenerated in step 312 may be stored as a historical data point forfuture use. In this manner, the ledger service is up-to-date with theavailability of PCI bus devices and the pool device resources connectedto them. This may enable the ledger service to provide accurateinformation about the availability of pool device resources to all pooldevices and/or user applications in one or more resource pools.

FIG. 3B shows a flowchart for performing a resource use prediction inaccordance with one or more embodiments of the invention. The methodshown in FIG. 3B may be performed by, for example, a resource usemanager (140, FIG. 1). Other components of the system illustrated inFIG. 1 may perform the method of FIG. 3B without departing from theinvention.

In step 320, historical data points are obtained from the ledgerservice. In one or more embodiments of the invention, the historicaldata points are obtained by a telemetry service of the resource usemanager. The telemetry service may obtain the historical data pointsbased on a policy that specifies obtaining historical data points at aspecified interval (e.g., every day, every hour, every seven days,etc.). In other embodiments, the historical data is obtained in responseto a request by, for example, a user application, which requests aprediction of future pool device resource reallocations.

In step 322, a determination is made about whether secondary source datais available. The determination may be based on whether secondary sourcedata has been obtained and is stored by the resource use manager. Ifsecondary source data is available, the method proceeds to step 324;otherwise, the method proceeds to step 324.

In step 324, a resource use evaluation is performed on the secondarysource data to determine a prediction usefulness of the secondary sourcedata. In one or more embodiments of the invention, the resource useevaluation is based on characteristics obtained by the resource usemanager.

The characteristics may specify how to determine whether secondarysource data is useful. The characteristics may specify, for example, arelevance of the source data to the resource reallocation, a reliabilityof the secondary source providing the secondary source data, a potentialimpact of the secondary source data to the resource reallocation, and/orother characteristics without departing from the invention. Thecharacteristics may be set by the resource use manager, anadministrator, or other entity, managing the resource use manager,and/or any other entity without departing from the invention.

In one or more embodiments of the invention, the result of the resourceuse evaluation is a set of one or more values that represent theusefulness of the secondary source data. For example, a predictionusefulness may be represented by a numerical value where the higher thevalue corresponds to more useful secondary source data.

In step 326, a resource prediction model is updated based on theobtained historical data and the secondary source data and using theprediction usefulness. In one or more embodiments of the invention, theprediction model is generated by performing a machine learning algorithmwith the historical data points, the secondary source data, and theusefulness of the secondary source data as inputs. The result ofapplying the machine learning algorithm may be an output. The output maybe, for example, a likelihood that resources are to be reallocated at aspecified point in time. As another example, the output may be afrequently used pool device resource of a pool device that is likely tobe reallocated (e.g., utilized by a secondary user application) in thefuture.

In one or more embodiments of the invention, the machine learningalgorithm is a multiple linear regression algorithm. In one or moreembodiments of the invention, the multiple linear regression algorithmis a function that models a linear relationship between multiple inputs(e.g., pool device resource use of a PCI bus device) and an output(e.g., a likelihood that the PCI bus device is to be used at a specifiedpoint in time). In various embodiments of the invention, the machinelearning algorithm is customized to include the selected features (whichin this embodiment correspond to the historical data points). Thetraining data (e.g., the historical data points, the secondary sourcedata, and the prediction usefulness) is then applied to the customizedmachine learning algorithm to determine the appropriate parameters. Theparameters may be used as the resource prediction model.

The prediction model may specify, for example, a relationship betweeninputs such as, for example, one or more pool devices, a time period,and/or a likelihood that a PCI bus device connected to an external pooldevice resource is to be used by the pool device(s) during that timeperiod.

Other machine learning algorithms may be used without departing from theinvention. For example, the invention may be implemented using one ofthe following other machine learning algorithms without departing fromthe invention: Linear Regression, Logistic Regression, Decision Tree,SVM, Naive Bayes, kNN, K-Means, Random Forest, Dimensionality ReductionAlgorithms, and Gradient Boosting algorithms.

In step 328, following the determination that no secondary source datais available, the resource prediction model is updated based on theobtained historical data. In one or more embodiments of the invention,the resource prediction model is generated similarly to that of step326. The difference may be that the machine learning algorithm is notapplied to secondary source data. In other words, only the historicaldata points are used as input to the machine learning model. The resultis a resource prediction model.

In step 330, access between one or more pool devices is initiated basedon the resource prediction model. In one or more embodiments of theinvention, after applying the resource prediction model to one or moreinputs, if the output specifies a high likelihood that a PCI bus deviceconnected to a pool device resource is to be used at a specified timeperiod, the prediction service of the resource use manager may, at apoint in time just before the specified time period, send a resource userequest to a distribution manager of the pool device that specifiesaccessing PCI bus devices of one or more pool devices. In this manner,the access is provided to a user application before the user applicationsends a resource use request, thus reducing latency between the need toaccess external pool device resources and the access.

FIG. 3C shows a flowchart for generating a digital twin in accordancewith one or more embodiments of the invention. The method shown in FIG.3C may be performed by, for example, a digital twin service (160, FIG.1). Other components of the system illustrated in FIG. 1 may perform themethod of FIG. 3C without departing from the invention.

In step 340, a digital twin generation request is obtained for one ormore pool devices. The digital twin generation request may specifygenerating a digital twin of one or more pool devices. Further, thedigital twin generation request may specify generating a digital twin ofone or more resource pools (e.g., groupings of pool devices). Thedigital twin generation may be obtained from a user application.

In step 342, resources of the pool device(s) are identified. Theresources include the PCI bus devices that are being locally used by thepool devices as well as the PCI bus devices on other pool devices thatare being used by the pool device(s). For example, if Pool Device A isusing local PCI Bus Device 1 and external PCI Bus Device 2 on PoolDevice B, then step 342 includes identifying PCI Bus Device 1 and PCIBus Device 2. In one or more embodiments of the invention, localresources are the pool device resources executing on each of thespecified pool devices.

In step 344, configuration information is identified associated with theidentified resources. In one or more embodiments of the invention, theconfiguration information may specify how each pool device is configuredto operate. The configuration information of a pool device may specify,for example, the pool device OS, network settings of the pool device, aboot sequence for booting the pool device, and/or any otherconfiguration information without departing from the invention.

In one or more embodiments of the invention, the configurationinformation is obtained by communicating with the corresponding pooldevice(s). The communication may include sending requests for theconfiguration information and obtaining responses that specify therequested configuration information.

In step 346, a resource reallocation is initiated using virtual switchesto access PCI bus devices connected to external pool device resourcesbased on the configuration information and the identified resources. Inone or more embodiments of the invention, the resource reallocationincludes accessing external pool device resources that generate thedigital twin.

The external pool device resources may be used to generate a digitaltwin that models the specified pool device(s) using the identifiedresources and the configuration information of the specified pooldevice(s). The result of modeling the specified pool device(s) based onthe identified resources and the configuration information is a digitaltwin of the specified pool device(s).

In step 348, performance calculations are performed based on theresource allocation. In one or more embodiments of the invention, theperformance calculations are performed on the external pool deviceresources modeling the specified pool device(s). The performancecalculations may include, for example, performing a simulation about thebehavior of the digital twin while undergoing a set of conditions andrecording the results of the digital twin based on the simulation. Theperformance calculations may be performed via other methods withoutdeparting from the invention.

In step 350, the resource use manager is updated based on theperformance calculations. In one or more embodiments of the invention,the results of the performance calculations may be stored in theresource use manager.

Example 1—PCI Bus Device Reservation

The following section describes an example. The example, illustrated inFIG. 4A, is not intended to limit the invention and is independent fromany other examples discussed in this application. Turning to theexample, consider a scenario in which a pool device would like to accessand utilize external pool device resources.

FIG. 4A shows an example system in accordance with one or moreembodiments of the invention. For the sake of brevity, not allcomponents of the example system may be illustrated. The example systemincludes two pool devices (400, 410) and a ledger service (420).

A user application A (402) executing on pool device A (400) is executingdata processing on data using a local CPU (408), accessed via pooldevice OS (404) accessing a PCI bus device A (406) connected to the pooldevice A CPU (408). Based on the data processing demand of the userapplication (402), the user application determines that the pool deviceA CPU (408) is not sufficient, and sends a resource use request to thepool device A OS (404) to obtain additional computing resources [1]. Theresource use request may be to utilize a graphics processing unit (GPU)for additional data processing.

A distribution manager (404A) operating in the OS (404) communicateswith a ledger service (420) to identify any available PCI bus devicesconnected to a GPU [2]. The ledger service may send a response thatspecifies a PCI Bus device B (414) connected to a GPU (416) on pooldevice B.

The distribution manager (404A), based on the response, initiates accessto PCI bus device B (414) [3]. The access is initiated by sending acommand to a virtual switch (404B) operating in pool device A OS (404).The command specifies connecting to PCI bus device B (414) via a pooldevice B OS (412). The virtual switch (404B), in response to thecommand, communicates with the pool device OS (412) to access PCI busdevice B (414), and connects to the user application (402) so that theuser application has access to the GPU (416) via the virtual switch(404B) [4].

The user application may execute the data processing using both thelocal pool device A CPU (408) and the external pool device B GPU (416).During this access, a ledger entry is generated and stored in the ledgerservice (420). The ledger entry specifies that PCI bus device B (414) isnot available for use by other user applications. After the userapplication completes the access of PCI bus device B (414), the ledgerservice (420) is further updated to specify that PCI bus device B (414)is available for use.

End of Example 1 Example 2—Resource Pool Prediction

The following section describes an example. The example, illustrated inFIG. 4B, is not intended to limit the invention and is independent fromany other examples discussed in this application. Turning to theexample, consider a scenario in which a resource use manager monitorsthe resource use of a resource pool.

FIG. 4B shows an example system in accordance with one or moreembodiments of the invention. For the sake of brevity, not allcomponents of the example system may be illustrated. The example systemincludes two resource pools (430, 432), a ledger service (420), aresource use manager (440), and a secondary source (450).

Resource pool A (430) includes multiple pool devices (not shown) thatprocess transactions at a coffee shop that is located in the east coastof the continental United States. During a time period of 6:00 am to9:00 am Eastern Standard Time (EST), the resource pool requiresadditional pool device resources to process a large quantity oftransactions that occur during that time. The large quantity oftransactions may be due to a large number of people ordering coffeeright before going to work. Resource pool A (430) communicates with theledger service (420) to identify any available CPUs to be used byresource pool A (430) [5]. The ledger service specifies that the CPUs inresource pool B (432) are available for use. Resource pool A (430)accesses the CPUs of resource pool B (432) during the specified time(i.e., 6:00 am to 9:00 am EST) [6].

After the access is complete, the access is specified as a historicaldata point stored in the ledger service (420). The access of the pooldevice resource in resource pool B (432) by resource pool A (430) may berepeated for three straight days at the same specified time. Eachiteration of the access may be specified as historical data points(424).

At a later point in time, a telemetry service (444) of the resource usemanager (440) obtains the historical data points (424) of the ledgerservice (420) [7]. Further, the resource use manager (440) obtainssecondary source data from a secondary source (450). The secondarysource data specifies that inclement weather (i.e., a thunderstorm) ispredicted to occur in the area of the coffee shop the following day forthe entire morning (i.e., 5:00 am to 11:00 am). This inclement weathermay impact the number of people going into work that day.

The resource use manager (440) utilizes the obtained historical datapoints (424) and the secondary source data obtained from the secondarysource (450) to generate a prediction model via a prediction service(442) [9].

Specifically, the prediction service (442) performs a resource useevaluation to evaluate the usefulness of the secondary source data. Theresource usefulness is determined to be of medium value. The predictionservice (442) performs the machine learning algorithm with thehistorical data points, the secondary source data, and the resourceusefulness as training data to obtain parameters used as the resourceprediction model. The prediction service inputs the resource pool A(430) and the specified time period to obtain a likelihood that resourcepool A (430) will need to use the pool device resources of resource poolB (432). The output results in a high likelihood.

Based on the result, the resource use manager (440) initiates accessbetween resource pool A (430) and the CPUs of resource pool B (432) at5:50 am EST [11]. In this manner, resource pool A (430) will alreadyhave access to the CPUs of resource pool B (432) by 6:00 am EST.Resource pool A (430) subsequently utilizes the external pool deviceresources until 9:00 am EST [11].

End of Example 2 Example 3—Digital Twin Generation

The following section describes an example. The example, illustrated inFIG. 4C, is not intended to limit the invention and is independent fromany other examples discussed in this application. Turning to theexample, consider a scenario in which a user application would like togenerate a digital twin of a resource pool to simulate the behavior ofthe resource pool under predetermined conditions.

FIG. 4C shows an example system in accordance with one or moreembodiments of the invention. For the sake of brevity, not allcomponents of the example system may be illustrated. The example systemincludes a resource pool (460) that include two pool devices (462, 464),two additional pool devices (470, 490), a resource use manager (440),and a digital twin service (480).

A user application (472) operating on pool device A (470) may request togenerate a digital twin of pool device B (462). The user application(472) sends a request to the distribution manager (474) [12] thatspecifies generating a digital twin of pool device B (462). Thedistribution manager (474) sends a digital twin generation request tothe digital twin service (480) [13].

The digital twin service (480), in response to the digital twingeneration request, communicates with the resource pool (460) toidentify the resources in the pool devices (462, 464) of the resourcepool (460) and the configuration information of the pool devices (462,464) [14]. The resources may include a four-core processor for each pooldevice (462, 464), eight gigabytes (GB) of RAM for each pool device, and10 GB per second of network bandwidth between each pool device (462,464) in resource pool A (460). Additionally, the resources may includethe PCI bus device of pool device B (462) being used by pool device C(464). The resource may specify the network connectivity between thepool devices (462, 464). The configuration information specifies thepool device OS of pool device B (462) and the network protocol betweenpool device B (462) and pool device C (464).

After identifying the resources and obtaining the configurationinformation of pool device B (462), the digital twin service (480)initiates access to a pool device D (490) that generates a digital twinof pool device B (462) based on the obtained information [15]. The userapplication (472), via the distribution manager (474), accesses the pooldevice resources of pool device D (490) to run a simulation of thedigital twin (492). The simulation includes analyzing any configurationissues in pool device B (462) via the digital twin (492), make changesto the digital twin (492) in order to resolve the configuration issues,analyze the response of the digital twin (492) (e.g., how the changesaffect network traffic or bandwidth between pool device B (462) and pooldevice C (464)) based on the changes made, and provide the response topool device A (470). Pool device A (470) may prompt the digital twinservice (480) to store a record of the simulation and the response inthe resource use manager (440) [16].

End of Example 3

As discussed above, embodiments of the invention may be implementedusing computing devices. FIG. 5 shows a diagram of a computing device inaccordance with one or more embodiments of the invention. The computingdevice (500) may include one or more computer processors (502),non-persistent storage (504) (e.g., volatile memory, such as randomaccess memory (RAM), cache memory), persistent storage (506) (e.g., ahard disk, an optical drive such as a compact disk (CD) drive or digitalversatile disk (DVD) drive, a flash memory, etc.), a communicationinterface (512) (e.g., Bluetooth interface, infrared interface, networkinterface, optical interface, etc.), input devices (510), output devices(508), and numerous other elements (not shown) and functionalities. Eachof these components is described below.

In one embodiment of the invention, the computer processor(s) (502) maybe an integrated circuit for processing instructions. For example, thecomputer processor(s) may be one or more cores or micro-cores of aprocessor. The computing device (500) may also include one or more inputdevices (510), such as a touchscreen, keyboard, mouse, microphone,touchpad, electronic pen, or any other type of input device. Further,the communication interface (512) may include an integrated circuit forconnecting the computing device (500) to a network (not shown) (e.g., alocal area network (LAN), a wide area network (WAN) such as theInternet, mobile network, or any other type of network) and/or toanother device, such as another computing device.

In one embodiment of the invention, the computing device (500) mayinclude one or more output devices (508), such as a screen (e.g., aliquid crystal display (LCD), a plasma display, touchscreen, cathode raytube (CRT) monitor, projector, or other display device), a printer,external storage, or any other output device. One or more of the outputdevices may be the same or different from the input device(s). The inputand output device(s) may be locally or remotely connected to thecomputer processor(s) (502), non-persistent storage (504), andpersistent storage (506). Many different types of computing devicesexist, and the aforementioned input and output device(s) may take otherforms.

One or more embodiments of the invention may be implemented usinginstructions executed by one or more processors of the data managementdevice. Further, such instructions may correspond to computer readableinstructions that are stored on one or more non-transitory computerreadable mediums.

One or more embodiments of the invention may improve the operation ofone or more computing devices. More specifically, embodiments of theinvention optimize the pool device resource use of multiple computingdevices by enabling each computing device to directly access the pooldevice resources of a second computing device. Embodiments of theinvention utilize a ledger service that monitors the access and requeststo access the external pool device resources of the computing devices toprevent overuse of a pool device resource. Prior to the invention, pooldevice resources in a system of computing devices may go unused whileother pool device resources may be overused. Embodiments of theinvention enable the system to reduce the load on the overused pooldevice resources by accessing the unused pool device resources.

Further, embodiments of the invention utilize machine learning and/orother algorithms to predict future resource reallocations. This mayenable the system to initiate access between a pool device (which may bea computing device) and external pool device resources prior to the pooldevice requesting the external pool device resources, thus reducinglatency and increasing efficiency.

Further, embodiments of the invention include generating digital twinsof a pool device. The digital twins may be used for troubleshootingand/or further prediction purposes. The use of digital twins fortroubleshooting and/or prediction purposes may enable the system toidentify the behavior of a pool device or resource pool without makingany changes to the actual pool devices and/or resource pools. This mayallow a secondary entity executing the simulations to identify theproblems and/or future behavior of the pool devices and/or resourcepools being simulated while maintaining the integrity of theaforementioned pool devices and/or resource pools.

While the invention has been described above with respect to a limitednumber of embodiments, those skilled in the art, having the benefit ofthis disclosure, will appreciate that other embodiments can be devisedwhich do not depart from the scope of the invention as disclosed herein.Accordingly, the scope of the invention should be limited only by theattached claims.

1. A method for managing pool device resources, the method comprising:obtaining, by a distribution manager, a resource use request from a userapplication, wherein the user application and the distribution managerare operating on a pool device in a resource pool; identifying, by thedistribution manager, a peripheral component interconnect (PCI) busdevice, wherein the PCI bus device is located on a second pool device inthe resource pool and is connected to a pool device resource on thesecond pool device; identifying, by the distribution manager, a secondPCI bus device, wherein the second PCI bus device is connected to asecond pool device resource in the resource pool; selecting, by thedistribution manager, between the PCI bus device and the second PCI busdevice, the PCI bus device based on a capability of the pool deviceresource; and initiating, by the distribution manager, access to the PCIbus device using a virtual switch operating on the pool device.
 2. Themethod of claim 1, further comprising: storing a ledger entry in aledger service based on the access.
 3. The method of claim 2, whereinthe ledger entry specifies the PCI bus device, the pool device, thesecond pool device.
 4. The method of claim 2, wherein the ledger entryspecifies that the PCI bus device is unavailable.
 5. The method of claim4, further comprising: determining that the pool device is not using thePCI bus device; and in response to the determination, updating theledger entry to specify that the PCI bus device is available.
 6. Themethod of claim 1, wherein the pool device resource is at least one of:a processor, memory, or persistent storage.
 7. The method of claim 1,wherein identifying the PCI bus device comprises obtaining a list of PCIbus devices in a resource pool, wherein the pool device and the secondpool device are in the resource pool.
 8. The method of claim 1, whereinthe PCI bus device is not available to a user application on the secondpool device after access to the PCI bus device is initiated.
 9. Anon-transitory computer readable medium comprising computer readableprogram code, which when executed by a computer processor enables thecomputer processor to perform a method, the method comprising:obtaining, by a distribution manager, a resource use request from a userapplication, wherein the user application and the distribution managerare operating on a pool device in a resource pool; identifying, thedistribution manager, a peripheral component interconnect (PCI) busdevice, wherein the PCI bus device is located on a second pool device inthe resource pool and is connected to a pool device resource on thesecond pool device; identifying, by the distribution manager, a secondPCI bus device, wherein the second PCI bus device is connected to asecond pool device resource in the resource pool; selecting, by thedistribution manager, between the PCI bus device and the second PCI busdevice, the PCI bus device based on a capability of the pool deviceresource; and initiating, by the distribution manager, access to the PCIbus device using a virtual switch operating on the pool device.
 10. Thenon-transitory computer readable medium of claim 9, the method furthercomprising: storing a ledger entry in a ledger service based on theaccess.
 11. The non-transitory computer readable medium of claim 10,wherein the ledger entry specifies the PCI bus device, the pool device,the second pool device.
 12. The non-transitory computer readable mediumof claim 10, wherein the ledger entry specifies that the PCI bus deviceis unavailable.
 13. The non-transitory computer readable medium of claim12, the method further comprising: determining that the pool device isnot using the PCI bus device; in response to the determination, updatingthe ledger entry to specify that the PCI bus device is available. 14.The non-transitory computer readable medium of claim 9, wherein the pooldevice resource is at least one of: a processor, memory, or persistentstorage.
 15. The non-transitory computer readable medium of claim 9,wherein identifying the PCI bus device comprises obtaining a list of PCIbus devices in a resource pool, wherein the pool device and the secondpool device are in the resource pool.
 16. The non-transitory computerreadable medium of claim 9, wherein the PCI bus device is not availableto a user application on the second pool device after access to the PCIbus device is initiated.
 17. A pool device in a resource pool,comprising: a PCI bus device; a virtual switch; a user application; anda distribution manager programmed to: obtain a resource use request fromthe user application; identify a second PCI bus device, wherein thesecond PCI bus device is connected to a pool device resource in a secondpool device in the resource pool; identify a third PCI bus device,wherein the third PCI bus device is connected to a second pool deviceresource in the resource pool; select between the second PCI bus deviceand the third PCI bus device, the second PCI bus device based on acapability of the pool device resource; and initiate access to thesecond PCI bus device using the virtual switch.
 18. The pool device ofclaim 17, wherein the distribution manager is further programmed tostore a ledger entry in a ledger service based on the access.
 19. Thepool device of claim 18, wherein the ledger entry specifies the PCI busdevice, the pool device, the second pool device, and wherein the ledgerentry specifies that the PCI bus device is unavailable.
 20. The pooldevice of claim 19, wherein the distribution manager is furtherprogrammed to: determining that the pool device is not using the PCI busdevice; and in response to the determination, updating the ledger entryto specify that the PCI bus device is available.